package com.example.ibsp_demo.mapper.login;

import com.example.ibsp_demo.pojo.entity.login.VerificationCode; // 替换为实际包路径
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@Mapper
public interface VerificationCodeMapper {

    // 根据主键查询
    VerificationCode selectByVid(Integer vid);
   /*
   *
   * 通过code查询验证码对象
   *
   * */
    VerificationCode selectByCode(String code);

    // 根据目标和类型查询最新验证码
    VerificationCode selectLatestByTargetAndType(VerificationCode code);

    // 查询指定时间内同一目标发送的验证码数量
    Integer countByTargetAndTime(Map<String, Object> params);

    // 插入验证码
    int insert(VerificationCode code);

    // 标记验证码为已使用
    int markAsUsed(Integer vid);

    // 删除过期验证码（定时任务调用）
    int deleteExpiredCodes();

    /*
    *
    * 更新表
    *
    * */
    int update(VerificationCode code);

    /*
    *
    * 选中未被使用的验证码
    *
    * */
    String selectUnusedCode(String email);

    /*
    *
    * 插入被更新的使用数据
    *
    *
    * */
    int insertCode(String code, String createTime, String expireTime);

    VerificationCode selectValidCode(String target, String type, Integer isUsed, LocalDateTime now);

}